﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Conexion;
using System.Data.SqlClient;
using AccesoDatos.Objetos;
namespace AccesoDatos.Manejador
{
    public class Manejador_Incapacidades
    {
        ClsConexion conexion = new ClsConexion();
        public int id_actual, id2;
        public DateTime fecha;
        #region LISTAS
        
        public DataTable ListaSinIncapacitacion(string buscar, string id_sucursal)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@idSuc", id_sucursal.ToString()));
            lista.Add(new ClsParametros("@buscar", buscar));
            DataTable X = conexion.Datatable_standart("sp_RH_Incapacidades_Lista_SinIncapacidad", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);

            return X;
        }

        public DataTable ListaIncapacitacion(string buscar, string id_sucursal, string tipo)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@idSuc", id_sucursal.ToString()));
            lista.Add(new ClsParametros("@buscar", buscar));
            lista.Add(new ClsParametros("@tipo", tipo));
            DataTable X = conexion.Datatable_standart("sp_RH_Incapacidades_Actuales", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);

            return X;
        }

        public DataTable ListaIncapacitacion_(string buscar, string id_sucursal, string tipo, string estado)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@idSuc", id_sucursal.ToString()));
            lista.Add(new ClsParametros("@tipo", tipo));
            lista.Add(new ClsParametros("@buscar", buscar));
            lista.Add(new ClsParametros("@estado", estado));
            DataTable X = conexion.Datatable_standart("sp_RH_Incapacidad_Listas_Incapacidad", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);

            return X;
        }

        public DataTable ListaIncapacitacion_Sucursal(string buscar, string id_sucursal, string tipo, string estado, DateTime fecha_inicio, DateTime fecha_fin)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@idSuc", id_sucursal.ToString()));
            lista.Add(new ClsParametros("@tipo", tipo));
            lista.Add(new ClsParametros("@buscar", buscar));
            lista.Add(new ClsParametros("@estado", estado));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Incapacidad_lista_sucursal", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);

            return X;
        }
        #endregion 

        #region Captura_Incapacidad

        public bool GuardaIncapacidad(objIncapacidades objI, objRH objR, int accion) {
            bool resp;
            DataTable datos,datos1;
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                //cat_empleados
                if (objI.Tipo != "LACTANCIA") objI.Hora_inicio = "NULL";
                switch (accion)
                {
                    case 1:
                        lista.Add(new ClsParametros("@id_empleado", objR.Id_Empleado.ToString()));
                        break;
                    case 2:
                        lista.Add(new ClsParametros("@id_incapacidad", objI.Id_Incapacidad.ToString()));         
                        break;
                }
                lista.Add(new ClsParametros("@tipo", objI.Tipo));
                lista.Add(new ClsParametros("@fecha_inicio", objI.Fecha_Inicio.ToShortDateString()));
                lista.Add(new ClsParametros("@fecha_fin", objI.Fecha_Fin.ToShortDateString()));
                lista.Add(new ClsParametros("@dias", objI.Dias.ToString()));
                lista.Add(new ClsParametros("@folio", objI.Folio));
                lista.Add(new ClsParametros("@comentarios", objI.Comentarios));
                lista.Add(new ClsParametros("@hora", objI.Hora_inicio));
                lista.Add(new ClsParametros("@pagar", objI.Pagar));
                lista.Add(new ClsParametros("@porciento", objI.Porciento.ToString()));
                switch (accion) { 
                    case 1:
                        datos = conexion.Datatable_standart("sp_RH_Incapacidades_Add_Incapacidad", lista);
                        DataRow[] array = new DataRow[datos.Rows.Count];
                        datos.Rows.CopyTo(array, 0);
                        object[] Info = datos.Rows[0].ItemArray;
                        id_actual = int.Parse(Info[0].ToString().Trim());
                        id2 = int.Parse(Info[1].ToString().Trim());
                        fecha = DateTime.Parse(Info[2].ToString().Trim());
                        break;
                    case 2:
                        datos1 = conexion.Datatable_standart("sp_RH_Incapacidades_Modifica_Incapacidad", lista);
                        DataRow[] array1 = new DataRow[datos1.Rows.Count];
                        datos1.Rows.CopyTo(array1, 0);
                        object[] Info1 = datos1.Rows[0].ItemArray;
                        fecha = DateTime.Parse(Info1[0].ToString().Trim());
                        break;
                }
               
                return true;
            }
            catch
            {
                return false;
            }
        
        }

        #endregion

        #region modifica


        public bool ModificaEstado(objIncapacidades objI)
        {
            DataTable datos;
            int estatus=0;
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                //cat_empleados
           
                lista.Add(new ClsParametros("@id_incapacidad", objI.Id_Incapacidad.ToString()));
                lista.Add(new ClsParametros("@estatus",estatus.ToString()));
                datos = conexion.Datatable_standart("sp_RH_Incapacidades_Interrumpir", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                fecha = DateTime.Parse(Info[0].ToString().Trim());
                return true;
            }
            catch
            {
                return false;
            }

        }

        #endregion
    }
}
